#include<cairo.h>
#include<math.h>


int
main(int argc, char* argv[]){
  cairo_surface_t *sfc = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 1600, 800);
  cairo_t * cr = cairo_create(sfc);

  cairo_set_line_width(cr, 4);
  cairo_move_to(cr, 800, 0);
  cairo_line_to(cr, 1600, 390);
  cairo_line_to(cr, 0, 390);


  cairo_rectangle(cr, 10,400, 600, 390);

  cairo_new_sub_path(cr);
  cairo_arc(cr, 1000,600,190, 0,2*M_PI);

  // `cairo_stroke_preserve`类似于`cairo_stroke`不同的是：
  // `cairo_stroke`会在画线后清除此前所有路径数据
  // 而`cairo_stroke_preserve`在画线后不会清除路径数据
  cairo_stroke_preserve(cr);

  // `cairo_set_source_rgb`会将当前《源模板》设置为纯白色
  // 等同于:`cairo_set_source(cr, cairo_pattern_create_rgb(1, 1, 1));`
  cairo_set_source_rgb(cr, 1, 1, 1);

  // `cairo_fill`首先会自动调用`cairo_close_path`闭合所有子路径
  // 然后会用《源模板》内容填充所有子路径。
  cairo_fill(cr);

  cairo_surface_write_to_png(sfc, "a.png");
  // 由a.png显示的内容可看出，`cairo_fill`只填充路径内部，不包含路径本身。

  return 0;
}//main

